package com.heima.ThreadPool.ScheduledExecutorService3ways;

import java.time.Instant;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

/**
 * @Author: Ethan Yankang
 * @Program: 面试必会代码
 * @Date: 2024-08-29 17:25
 **/
/*
*周期延时线程池
* 纯周期
 ScheduledFuture<?> scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit)
 * 延迟时间单位是unit,数量是initialDelay的时间后,每间隔period时间重复执行一次command。
 *
 * 等待执行完毕+周期
 ScheduledFuture<?> scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit)
 * 创建并执行一个在给定初始延迟后首次启用的定期操作，随后，在每一次执行终止和下一次执行开始之间都存在给定的延迟。
*/


public class ScheduledExecutorServiceDelay {
    public static void main(String[] args) throws InterruptedException {
        ScheduledExecutorService es = Executors.newScheduledThreadPool(1);//创建3份核心线程的线程池
            es.scheduleAtFixedRate(()->{System.out.println("线程池中的线程 "+Thread.currentThread().getName()+" 执行,taskId="+Instant.now());},0,3,TimeUnit.SECONDS);
            es.scheduleWithFixedDelay(()->{System.err.println("线程池中的线程 "+Thread.currentThread().getName()+" 执行,taskId="+Instant.now());},0,3,TimeUnit.SECONDS);
    }
}
